home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DWinViewer.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  14.6 KB  |  475 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                              **
  3.  **     Module:        QD3DWinViewer.h                                             **                        
  4.  **                                                                              **
  5.  **                                                                              **
  6.  **     Purpose:     WinViewer Controller Interface File.                     **            
  7.  **                                                                              **
  8.  **                                                                              **
  9.  **                                                                              **
  10.  **     Copyright (C) 1996-1997 Apple Computer, Inc.  All rights reserved.   **
  11.  **                                                                              **
  12.  **                                                                              **
  13.  *****************************************************************************/
  14. #ifndef QD3DWinViewer_h
  15. #define QD3DWinViewer_h
  16.  
  17. #include "QD3D.h"
  18. #include "QD3DGroup.h"
  19.  
  20. #if defined(OS_WIN32) && OS_WIN32
  21.  
  22. #include <windows.h>
  23.  
  24. #if defined(_MSC_VER)    /* Microsoft Visual C */
  25.     #if defined(Q3VIEWER_EXPORTING)    /* define when building DLL    */
  26.         #define Q3VIEWER_EXPORT __declspec( dllexport )     
  27.         #define Q3VIEWER_CALL      
  28.     #else
  29.         #define Q3VIEWER_EXPORT __declspec( dllimport )    
  30.         #define Q3VIEWER_CALL __cdecl     
  31.     #endif /* WIN32_EXPORTING */
  32. #else
  33.     #define Q3VIEWER_EXPORT
  34.     #define Q3VIEWER_CALL      
  35. #endif  /*  _MSC_VER  */
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif    /* __cplusplus */
  40.  
  41. typedef void *TQ3ViewerObject;
  42.  
  43. enum {
  44.     kQ3ViewerShowBadge             = 1 << 0,
  45.     kQ3ViewerActive                = 1 << 1,
  46.     kQ3ViewerControllerVisible    = 1 << 2,
  47.     
  48.     kQ3ViewerButtonCamera        = 1 << 3,
  49.     kQ3ViewerButtonTruck        = 1 << 4,
  50.     kQ3ViewerButtonOrbit        = 1 << 5,
  51.     kQ3ViewerButtonZoom            = 1 << 6,
  52.     kQ3ViewerButtonDolly        = 1 << 7,
  53.     kQ3ViewerButtonReset        = 1 << 8,
  54.     kQ3ViewerButtonNone            = 1 << 9,
  55.     
  56.     kQ3ViewerOutputTextMode        = 1 << 10,
  57.  
  58.     kQ3ViewerDraggingInOff        = 1 << 11,
  59.  
  60.     kQ3ViewerDefault            = 1 << 15
  61. };
  62.  
  63.  
  64. enum {
  65.     kQ3ViewerEmpty    = 0,
  66.     kQ3ViewerHasModel = 1 << 0,
  67.     kQ3ViewerHasUndo  = 1 << 1
  68. };
  69.  
  70. typedef enum TQ3ViewerCameraView {
  71.     kQ3ViewerCameraRestore,
  72.     kQ3ViewerCameraFit,
  73.     kQ3ViewerCameraFront,
  74.     kQ3ViewerCameraBack,
  75.     kQ3ViewerCameraLeft,
  76.     kQ3ViewerCameraRight,
  77.     kQ3ViewerCameraTop,
  78.     kQ3ViewerCameraBottom
  79. } TQ3ViewerCameraView;
  80.  
  81.  
  82. /******************************************************************************
  83.  **                                                                             **
  84.  **                                WM_NOTIFY structures                           **
  85.  **                                                                             **
  86.  *****************************************************************************/
  87.  
  88. typedef struct TQ3ViewerDropFiles {
  89.     NMHDR                nmhdr; 
  90.     HANDLE                hDrop; 
  91. } TQ3ViewerDropFiles;
  92.  
  93. typedef struct TQ3ViewerSetView {
  94.     NMHDR                nmhdr;
  95.     TQ3ViewerCameraView    view;
  96. } TQ3ViewerSetView;
  97.  
  98. typedef struct TQ3ViewerSetViewNumber {
  99.     NMHDR                nmhdr;
  100.     unsigned long        number;
  101. } TQ3ViewerSetViewNumber;
  102.  
  103. typedef struct TQ3ViewerButtonSet {
  104.     NMHDR                nmhdr;
  105.     unsigned long        button;
  106. } TQ3ViewerButtonSet;
  107.  
  108.  
  109. /******************************************************************************
  110.  **                                                                             **
  111.  **                                WM_NOTIFY defines                               **
  112.  **                                                                             **
  113.  *****************************************************************************/
  114.  
  115. #define Q3VNM_DROPFILES        0x5000
  116. #define Q3VNM_CANUNDO        0x5001
  117. #define Q3VNM_DRAWCOMPLETE    0x5002
  118. #define Q3VNM_SETVIEW        0x5003
  119. #define Q3VNM_SETVIEWNUMBER    0x5004
  120. #define Q3VNM_BUTTONSET        0x5005
  121. #define Q3VNM_BADGEHIT        0x5006
  122.  
  123.  
  124. /******************************************************************************
  125.  **                                                                             **
  126.  **                            Win32 Window Class Name                           **
  127.  **        Can be passed as a parameter to CreateWindow or CreateWindowEx       **
  128.  **                                                                             **
  129.  *****************************************************************************/
  130.  
  131. #define kQ3ViewerClassName "QD3DViewerWindow"
  132.  
  133.  
  134. /******************************************************************************
  135.  **                                                                             **
  136.  **                            Win32 Clipboard type                              **
  137.  **                                                                             **
  138.  *****************************************************************************/
  139.  
  140. #define kQ3ViewerClipboardFormat "QuickDraw 3D Metafile"
  141. /******************************************************************************
  142.  **                                                                             **
  143.  **        Return viewer version number                                         **
  144.  **                                                                             **
  145.  *****************************************************************************/
  146.  
  147. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetVersion(
  148.     unsigned long        *majorRevision,
  149.     unsigned long        *minorRevision);
  150.  
  151.     
  152. /******************************************************************************
  153.  **                                                                             **
  154.  **        Return viewer release version number                                 **
  155.  **        (in 'vers' format - e.g. 0x01518000 ==> 1.5.1 release)                 **
  156.  **                                                                             **
  157.  *****************************************************************************/
  158.  
  159. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetReleaseVersion(
  160.     unsigned long        *releaseRevision);
  161.  
  162.     
  163. /******************************************************************************
  164.  **                                                                             **
  165.  **                        Creation and destruction                             **
  166.  **                Note that this is not a QuickDraw 3D object                     **
  167.  **                                                                             **
  168.  *****************************************************************************/
  169.  
  170. Q3VIEWER_EXPORT TQ3ViewerObject Q3VIEWER_CALL Q3WinViewerNew (
  171.     HWND             window, 
  172.     const RECT         *rect, 
  173.     unsigned long     flags);
  174.  
  175. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerDispose(
  176.     TQ3ViewerObject    viewer);
  177.  
  178.  
  179. /******************************************************************************
  180.  **                                                                             **
  181.  **                    Functions to attach data to a WinViewer                     **
  182.  **                                                                             **
  183.  *****************************************************************************/
  184.  
  185. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerUseFile(
  186.     TQ3ViewerObject        viewer,
  187.     HANDLE                fileHandle);
  188.  
  189. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerUseData(
  190.     TQ3ViewerObject        viewer,
  191.     void                *data,
  192.     unsigned long        size);
  193.  
  194.  
  195. /******************************************************************************
  196.  **                                                                             **
  197.  **                Functions to write data out from the WinViewer                 **
  198.  **                                                                             **
  199.  *****************************************************************************/
  200.  
  201. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerWriteFile(
  202.     TQ3ViewerObject        viewer,
  203.     HANDLE                fileHandle);
  204.  
  205. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerWriteData(
  206.     TQ3ViewerObject        viewer,
  207.     void                *data,
  208.     unsigned long        dataSize,
  209.     unsigned long        *actualDataSize);
  210.  
  211.  
  212. /******************************************************************************
  213.  **                                                                             **
  214.  **        Use this function to force the WinViewer to re-draw                     **
  215.  **                                                                             **
  216.  *****************************************************************************/
  217.  
  218. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerDraw(
  219.     TQ3ViewerObject        viewer);
  220.  
  221. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerDrawContent(
  222.     TQ3ViewerObject     viewer);
  223.  
  224. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerDrawControlStrip(
  225.     TQ3ViewerObject     viewer);
  226.  
  227.  
  228. /******************************************************************************
  229.  **                                                                             **
  230.  **        Function used by the WinViewer to filter and handle events             **
  231.  **                                                                             **
  232.  *****************************************************************************/
  233.  
  234. Q3VIEWER_EXPORT BOOL Q3VIEWER_CALL Q3WinViewerMouseDown(
  235.     TQ3ViewerObject        viewer,
  236.     long                x,
  237.     long                y);
  238.  
  239. Q3VIEWER_EXPORT BOOL Q3VIEWER_CALL Q3WinViewerContinueTracking(
  240.     TQ3ViewerObject        viewer,
  241.     long                x,
  242.     long                y);
  243.  
  244. Q3VIEWER_EXPORT BOOL Q3VIEWER_CALL Q3WinViewerMouseUp(
  245.     TQ3ViewerObject        viewer,
  246.     long                x,
  247.     long                y);
  248.  
  249.  
  250. /******************************************************************************
  251.  **                                                                             **
  252.  **        This function returns a Bitmap of the contents of the                  **
  253.  **        WinViewer's window.  The application should dispose the Bitmap.         **
  254.  **                                                                             **
  255.  *****************************************************************************/
  256.  
  257. Q3VIEWER_EXPORT HBITMAP Q3VIEWER_CALL Q3WinViewerGetBitmap(
  258.     TQ3ViewerObject        viewer);
  259.     
  260.     
  261. /******************************************************************************
  262.  **                                                                             **
  263.  **                    Calls for dealing with Buttons                             **
  264.  **                                                                             **
  265.  *****************************************************************************/
  266.  
  267. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetButtonRect(
  268.     TQ3ViewerObject        viewer,
  269.     unsigned long        button,
  270.     RECT                *rectangle);
  271.  
  272. Q3VIEWER_EXPORT unsigned long Q3VIEWER_CALL Q3WinViewerGetCurrentButton(
  273.     TQ3ViewerObject    viewer);
  274.     
  275. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetCurrentButton(
  276.     TQ3ViewerObject        viewer,
  277.     unsigned long        button);
  278.  
  279.  
  280. /******************************************************************************
  281.  **                                                                             **
  282.  **        Functions to set/get the group to be displayed by the WinViewer.     **
  283.  **                                                                             **
  284.  *****************************************************************************/
  285.  
  286. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerUseGroup(
  287.     TQ3ViewerObject        viewer,
  288.     TQ3GroupObject        group);
  289.     
  290. Q3VIEWER_EXPORT TQ3GroupObject Q3VIEWER_CALL Q3WinViewerGetGroup(
  291.     TQ3ViewerObject        viewer);
  292.  
  293.  
  294. /******************************************************************************
  295.  **                                                                             **
  296.  **        Functions to set/get the color used to clear the window                 **
  297.  **                                                                             **
  298.  *****************************************************************************/
  299.  
  300. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetBackgroundColor(
  301.     TQ3ViewerObject        viewer,
  302.     TQ3ColorARGB        *color);
  303.     
  304. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetBackgroundColor(
  305.     TQ3ViewerObject        viewer,
  306.     TQ3ColorARGB        *color);
  307.  
  308.  
  309. /******************************************************************************
  310.  **                                                                             **
  311.  **        Getting/Setting a WinViewer's View object.  Disposal is needed.         **
  312.  **                                                                             **
  313.  *****************************************************************************/
  314.  
  315. Q3VIEWER_EXPORT TQ3ViewObject Q3VIEWER_CALL Q3WinViewerGetView(
  316.     TQ3ViewerObject        viewer);
  317.  
  318. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerRestoreView(
  319.     TQ3ViewerObject        viewer);
  320.  
  321.  
  322. /******************************************************************************
  323.  **                                                                             **
  324.  **        Calls for setting/getting WinViewer flags                             **
  325.  **                                                                             **
  326.  *****************************************************************************/
  327.  
  328. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetFlags(
  329.     TQ3ViewerObject        viewer,
  330.     unsigned long        flags);
  331.  
  332. Q3VIEWER_EXPORT unsigned long Q3VIEWER_CALL Q3WinViewerGetFlags(
  333.     TQ3ViewerObject        viewer);
  334.  
  335.  
  336. /******************************************************************************
  337.  **                                                                             **
  338.  **        Calls related to bounds/dimensions.  Bounds is the size of              **
  339.  **        the window.  Dimensions can either be the Rect from the ViewHints     **
  340.  **        or the current dimensions of the window (if you do a Set).             **
  341.  **                                                                             **
  342.  *****************************************************************************/
  343.  
  344. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetBounds(
  345.     TQ3ViewerObject        viewer,
  346.     RECT                *bounds);
  347.     
  348. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetBounds(
  349.     TQ3ViewerObject        viewer,
  350.     RECT                *bounds);
  351.  
  352. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetDimension(
  353.     TQ3ViewerObject        viewer,
  354.     unsigned long        width,
  355.     unsigned long        height);
  356.  
  357. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetDimension(
  358.     TQ3ViewerObject        viewer,
  359.     unsigned long        *width,
  360.     unsigned long        *height);
  361.  
  362. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetMinimumDimension(
  363.     TQ3ViewerObject        viewer,
  364.     unsigned long        *width,
  365.     unsigned long        *height);
  366.  
  367.  
  368. /******************************************************************************
  369.  **                                                                             **
  370.  **                            Window related calls                             **
  371.  **                                                                             **
  372.  *****************************************************************************/
  373.  
  374. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetWindow(
  375.     TQ3ViewerObject        viewer,
  376.     HWND                window);
  377.     
  378. Q3VIEWER_EXPORT HWND Q3VIEWER_CALL Q3WinViewerGetWindow(
  379.     TQ3ViewerObject        viewer);
  380.  
  381. Q3VIEWER_EXPORT TQ3ViewerObject Q3VIEWER_CALL Q3WinViewerGetViewer(
  382.     HWND                theWindow);
  383.  
  384. Q3VIEWER_EXPORT HWND Q3VIEWER_CALL Q3WinViewerGetControlStrip (
  385.     TQ3ViewerObject     viewer);
  386.  
  387.  
  388. /******************************************************************************
  389.  **                                                                             **
  390.  **        Adjust Cursor provided for compatibility with Mac Viewer             **
  391.  **                                                                             **
  392.  *****************************************************************************/
  393.  
  394. Q3VIEWER_EXPORT TQ3Boolean Q3VIEWER_CALL Q3WinViewerAdjustCursor(
  395.     TQ3ViewerObject        viewer,
  396.     long                x,
  397.     long                y);
  398.  
  399. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerCursorChanged(
  400.     TQ3ViewerObject        viewer);
  401.  
  402.  
  403. /******************************************************************************
  404.  **                                                                             **
  405.  **        Returns the state of the WinViewer.  See the constant defined at the **
  406.  **        top of this file.                                                     **
  407.  **                                                                             **
  408.  *****************************************************************************/
  409.  
  410. Q3VIEWER_EXPORT unsigned long Q3VIEWER_CALL Q3WinViewerGetState(
  411.     TQ3ViewerObject        viewer);
  412.  
  413.  
  414. /******************************************************************************
  415.  **                                                                             **
  416.  **                            Clipboard utilities                                 **
  417.  **                                                                             **
  418.  *****************************************************************************/
  419.  
  420. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerClear(
  421.     TQ3ViewerObject    viewer);
  422.     
  423. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerCut(
  424.     TQ3ViewerObject    viewer);
  425.     
  426. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerCopy(
  427.     TQ3ViewerObject    viewer);
  428.     
  429. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerPaste(
  430.     TQ3ViewerObject    viewer);
  431.  
  432.  
  433. /******************************************************************************
  434.  **                                                                             **
  435.  **                                Undo                                          **
  436.  **                                                                             **
  437.  *****************************************************************************/
  438.  
  439. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerUndo(
  440.     TQ3ViewerObject    viewer);
  441.         
  442. Q3VIEWER_EXPORT TQ3Boolean Q3VIEWER_CALL Q3WinViewerGetUndoString(
  443.     TQ3ViewerObject    viewer, 
  444.     char             *string,
  445.     unsigned long     stringSize,
  446.     unsigned long    *actualSize);
  447.  
  448.  
  449. /******************************************************************************
  450.  **                                                                             **
  451.  **                            New Camera Stuff                                 **
  452.  **                                                                             **
  453.  *****************************************************************************/
  454.  
  455. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerGetCameraCount(
  456.     TQ3ViewerObject        viewer, 
  457.     unsigned long         *count);
  458.  
  459. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetCameraNumber(
  460.     TQ3ViewerObject        viewer, 
  461.     unsigned long         cameraNo);
  462.  
  463. Q3VIEWER_EXPORT TQ3Status Q3VIEWER_CALL Q3WinViewerSetCameraView(
  464.     TQ3ViewerObject        viewer, 
  465.     TQ3ViewerCameraView viewType);
  466.  
  467. #ifdef __cplusplus
  468. }
  469. #endif    /* __cplusplus */
  470.  
  471. #endif     /* OS_WIN32 */
  472.  
  473. #endif    /* QD3DWinViewer_h */
  474.  
  475.